package com.example.sams.service;

import com.example.sams.domain.po.Teachers;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.sams.domain.request.ApplyCourseRequest;
import com.example.sams.domain.request.UpdateTeacherProfileRequest;
import com.example.sams.utils.ResultUtil;

/**
 * <p>
 * 教师表 服务类
 * </p>
 *
 * @author jinghong
 * @since 2025-11-04
 */
public interface ITeachersService extends IService<Teachers> {
    /**
     * 获取当前教师信息
     * @param userId 当前登录用户ID
     * @return 教师信息
     */
    ResultUtil getCurrentTeacherInfo(String userId);

    /**
     * 更新教师信息
     * @param userId 当前登录用户ID
     * @param request 更新请求
     * @return 操作结果
     */
    ResultUtil updateProfile(String userId, UpdateTeacherProfileRequest request);

    /**
     * 获取已申请课程列表
     * @param userId 当前登录用户ID
     * @return 课程申请列表
     */
    ResultUtil getAppliedCourses(String userId);

    /**
     * 申请课程
     * @param userId 当前登录用户ID
     * @param request 申请课程请求
     * @return 操作结果
     */
    ResultUtil applyCourse(String userId, ApplyCourseRequest request);

    /**
     * 取消课程申请
     * @param userId 当前登录用户ID
     * @param applicationId 申请ID（课程ID）
     * @return 操作结果
     */
    ResultUtil cancelApplication(String userId, String applicationId);

    /**
     * 获取我的课程列表（已审核通过的）
     * @param userId 当前登录用户ID
     * @return 课程列表
     */
    ResultUtil getMyCourses(String userId);

    /**
     * 取消课程（已审核通过的课程）
     * @param userId 当前登录用户ID
     * @param courseId 课程ID
     * @return 操作结果
     */
    ResultUtil cancelCourse(String userId, String courseId);

    /**
     * 获取课程学生列表
     * @param userId 当前登录用户ID
     * @param courseId 课程ID
     * @return 学生列表
     */
    ResultUtil getCourseStudents(String userId, String courseId);
}
